#include <iostream>
#include <queue>

using namespace std;
// 225.用队列实现栈
// 请你仅使用两个队列实现一个后入先出（LIFO）的栈，并支持普通栈的全部四种操作（push、top、pop 和 empty）。

class MyStack {
private:
    queue<int> q;
public:
    MyStack() {

    }
    // 入栈
    void push(int x) {
        int n = q.size();
        q.push(x);  // x先入队
        for(int i = 0; i < n; i++) {    // 前面的元素出队，入队
            q.push(q.front());
            q.pop();
        }

    }
    // 出栈
    int pop() {
        int t = q.front();
        q.pop();
        return t;
    }
    // 取栈顶 == 取队头
    int top() {
        return q.front();
    }
    // 判栈空 == 判队空
    bool empty() {
        return q.empty();
    }
};

/**
 * Your MyStack object will be instantiated and called as such:
 * MyStack* obj = new MyStack();
 * obj->push(x);
 * int param_2 = obj->pop();
 * int param_3 = obj->top();
 * bool param_4 = obj->empty();
 */


int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}
